package com.hxzy.service.system;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hxzy.dto.system.SysMenuAllDTO;
import com.hxzy.dto.system.SysMenuDTO;
import com.hxzy.entity.system.SysMenu;
import com.hxzy.vo.system.HxzyUser;
import com.hxzy.vo.system.MenuTreeVO;
import com.hxzy.vo.system.MenuVO;


import java.util.List;
import java.util.Set;


/**
 * 菜单业务逻辑
 */
public interface SysMenuService extends IService<SysMenu> {



    /**
     * 根据用户ID查询菜单树信息
     *
     * @param hxzyUser 用户ID
     * @return 菜单列表
     */
    List<MenuVO> selectMenuTreeByUserId(HxzyUser hxzyUser);


    /**
     * 分页查询
     * @param sysMenuDTO
     * @return
     */
    IPage<SysMenu> selectMenuTreeAll(SysMenuDTO sysMenuDTO);

    /**
     * 根据id查询
     * @param id
     * @return
     */
    SysMenu findById(Long id);

    /**
     * 角色分配权限的对象
     * @return
     */
    List<MenuTreeVO> buildTreeMenu();

    /**
     * 根据用户id分配菜单ID
     * @param userId
     * @return
     */
    List<Long> selectMenuTreeByUserIdOwner(Long userId);

    /**
     * 全查询菜单树形结构完整版
     * @return
     */
    List<MenuVO> buildTreeMenuAll(SysMenuAllDTO sysMenuAllDTO);

    /**
     * 不分页查询
     * @param sysMenuAllDTO
     * @return
     */
    List<MenuVO> selectMenuAll(SysMenuAllDTO sysMenuAllDTO);
}